//
//  RBMainViewController.swift
//  myWeiBo
//
//  Created by 刘邓诏初 on 16/4/8.
//  Copyright © 2016年 刘邓诏初. All rights reserved.
//

import UIKit

class RBMainViewController: UITabBarController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let mainTabBar = RBMainTabBar()
        
        // 传递闭包
        mainTabBar.composeClosure = {
            RBPrint("composeBtnDidClick")
        }
        
        // tabBar = mainTabBar   tabBar是只读属性，所以不能这样设置。可以使用KVC的方法设置
        setValue(mainTabBar, forKey: "tabBar")
        
        // 设置子控制器
        setUpChildViewControllers()
        
    }
    
    /**
     设置自控制器
     */
    private func setUpChildViewControllers(){
        // 首页
        setUpChildViewController(controller: RBHomeTableViewController(), title: "首页", imageName: "tabbar_home")
        
        // 消息
        setUpChildViewController(controller: RBMessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        
        // 发现
        setUpChildViewController(controller: RBDiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        
        // 我
        setUpChildViewController(controller: RBProfileTableViewController(), title: "我", imageName: "tabbar_profile")
    }
    
    /**
     添加子控制器
     
     - parameter controller: 子控制器
     - parameter title:      标题
     - parameter imageName:  图片名称
     */
    private func setUpChildViewController(controller controller:UIViewController,title:String,imageName:String){
        
        // 设置tabBarItem普通状态下的文字和图片
        controller.title = title
        controller.tabBarItem.image = UIImage(named: imageName)
        
        // 设置tabBarItem选中状态下的文字颜色和图片
        // imageWithRenderingMode(.AlwaysOriginal) 使图片一致保持原本样子，不会被渲染
        // 因为选中图片比普通图片的名字多一个 _selected ，所以可以直接拼接
        controller.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")?.imageWithRenderingMode(.AlwaysOriginal)
        
        // NSTextEffectAttributeName,点进去可以找到文字的属性 相关描述，比如 NSForegroundColorAttributeName
        controller.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: .Selected)
        addChildViewController(UINavigationController(rootViewController: controller))
    }
}
